// 此处的padding 参数需要的类型 为 number 或者 string
// 但是却 用any 不严谨
function padLeft(value: string, padding: any) {
    if (typeof padding === "number") {
        return Array(padding + 1).join(" ") + value;
    }
    if (typeof padding === "string") {
        return padding + value;
    }
    throw new Error(`Expected string or number, got '${padding}'.`);
}

padLeft("Hello world", 4); // returns "    Hello world"
// 传入 Boolean 类型 时候 程序会运行出错
padLeft("Hello world", true); // returns "    Hello world"

// 使用联合类型 
function padRight(value: string, padding: number|string) {
    if (typeof padding === "number") {
        return Array(padding + 1).join(" ") + value;
    }
    if (typeof padding === "string") {
        return padding + value;
    }
    throw new Error(`Expected string or number, got '${padding}'.`);
}

padRight("Hello world", 4); // returns "    Hello world"
// 传入 Boolean 类型 时候 程序会运行出错
padRight("Hello world", true); // 此时会报错
